// pages/stroyDetail/stroyDetail.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
      
      vidoNotify: false, //控制视频提醒通知
      likeNotify: false, //控制like提醒通知
      animationClass: '', //like的动画效果
      vidoShow: false,//控制视频显示
      listenShow: false, //控制语音播放
      //提醒通知进入和离开时间
      animationDuration: {
          enter: 300,
          leave: 300
      },
      isPlaying: false, // 添加一个变量来跟踪播放状态
      listenPlayshow:false, //音频播放器是否显示
      audioContext: null, // 添加一个变量来存储音频上下文
      contain: {}, //当前故事详情
    //   detail:[],
      loading: true,     // 新增加载状态
      error: null  
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
      console.log(options.id);
    if (!options.id) {
      this.setData({ error: '缺少故事ID参数', loading: false });
      return;
    }

    this.setData({ loading: true });
    this.fetchStoryDetail(options.id);
  },
   // 获取故事详情
   async fetchStoryDetail(id) {
    try {
      const res = await wx.cloud.callFunction({
        name: 'getStotyList', 
        data: { _id: id }
      });
      if (res.result.code === 200 && res.result.data) {
        this.setData({
          contain: res.result.data,
          loading: false
        });
      } else {
        this.setData({
          error: '故事内容不存在',
          loading: false
        });
      }
    } catch (err) {
      console.error('获取详情失败:', err);
      this.setData({
        error: '获取故事详情失败，请重试',
        loading: false
      });
    }
  },

//   onLike() {
//     let newContain = this.data.contain
//     newContain.like = !newContain.like
//     this.setData({
//         contain: newContain
//     })
//     console.log(this.data.listenPlayshow)
//     // 触发动画
//     const animationClass = newContain.like ? 'jump' : '';
//     this.setData({
//         animationClass: animationClass
//     });
//     console.log(this.data.contain)
//     console.log(this.data.detail)
//     // 使用 setTimeout 使得动画类在下次渲染前移除，以便下次点击时再次应用
//     setTimeout(() => {
//         this.setData({
//             animationClass: ''
//         });
//     }, 300); // 动画时间应与 CSS 中一致
//     if (this.data.contain.like) {
//         this.setData({
//             likeNotify: true
//         });
//         // 设置 2 秒后将 notify 设置为 false
//         setTimeout(() => {
//             this.setData({
//                 likeNotify: false
//             });
//         }, 1000);
//     } else {
//         this.setData({
//             likeNotify: false
//         });
//     }

// },
 // 新增关注处理函数
 
 async onLike() {
  if (!this.data.contain) return
  
  // 优先检查本地登录状态
    const localUser = wx.getStorageSync('userinfo')
    if (!localUser?.nickName) {
      wx.showToast({
        title: '🌟 请登录后继续操作',
        icon: 'none',
        duration: 1000,
        mask: true
      });
      // 第二步：异步提示流程
      setTimeout(() => {
        // 触觉反馈
        wx.vibrateShort({ type: 'heavy' });

        // 第三步：跳转预加载提示
        wx.showLoading({
          title: '正在前往登录页...',
          mask: true
        });

        // 页面路径处理（保持原逻辑）
        const pages = getCurrentPages();
        const currentPage = pages[pages.length - 1];
        const path = currentPage.route;
        const options = currentPage.options;

        const params = [];
        for (const key in options) {
          params.push(`${key}=${encodeURIComponent(options[key])}`);
        }
        const returnUrl = `/${path}${params.length ? '?' + params.join('&') : ''}`;

        // 存储跳转信息
        wx.setStorageSync('returnUrl', {
          path: returnUrl,
          isTab: ['pages/index/index', 'pages/my/my', 'pages/map/map'].includes(path)
        });

        // 第四步：延迟跳转（保证提示可见）
        setTimeout(() => {
          wx.hideLoading();
          wx.switchTab({ url: '/pages/my/my' });
        }, 1500); // 控制加载提示持续时间

      }, 2500); // 等待toast显示完成
      return;    
     
    }
 
  try {
    wx.showLoading({ title: '处理中...', mask: true })
    
    // 直接调用独立事务云函数
    const { result } = await wx.cloud.callFunction({
      name: 'saveCollectList',  // 需要新建的云函数
      data: {
        action: this.data.contain.islike ? 'unfollow' : 'follow',
        poiId: this.data.contain._id,
        poiData: {
          name: this.data.contain.title,
          detail:this.data.contain.detail,
          type:'story',
        }
      }
    })
    // 成功
    if (result.code === 0) {
      this.setData({
        'contain.islike': !this.data.contain.islike
      }, () => {
        if(!this.data.contain.islike){
            wx.showToast({
                title:'已取消',
                icon: 'success'
            })
            return
        }
        
            let newContain = this.data.contain
            
            console.log(this.data.listenPlayshow)
            console.log(newContain,'newContain');
            // 触发动画
            const animationClass = newContain.islike ? 'jump' : '';
            this.setData({
                animationClass: animationClass
            });
            console.log(this.data.contain)
            // 使用 setTimeout 使得动画类在下次渲染前移除，以便下次点击时再次应用
            setTimeout(() => {
                this.setData({
                    animationClass: ''
                });
            }, 300); // 动画时间应与 CSS 中一致
            if (this.data.contain.islike) {
                this.setData({
                    likeNotify: true
                });
                // 设置 2 秒后将 notify 设置为 false
                setTimeout(() => {
                    this.setData({
                        likeNotify: false
                    });
                }, 1000);
            } else {
                this.setData({
                    likeNotify: false
                });
            }


      })
    } else {
      throw new Error(result.msg)
    }
    
  } catch (err) {
    console.error('操作失败:', err)
    wx.showToast({ title: err.message || '操作失败', icon: 'none' })
  } finally {
    wx.hideLoading()
  }
},




  onListen() {
      this.setData({
          isPlaying: !this.data.isPlaying,
          listenPlayshow:true
      });
      let isPlaying = this.data.isPlaying;
      console.log("朗读");
      // 引入插件
      const plugin = requirePlugin('WechatSI');

      // 获取当前文章的详细内容
      const longText = this.data.contain.detail;

      // 按逗号和句号分割文本
      const sentences = longText.split(/，|。/);

      // 重新组合句子，尽量让每个片段的长度接近50个字符
      const textSegments = [];
      let currentSegment = '';

      textSegments.push(this.data.contain.title);

      sentences.forEach(sentence => {
          if ((currentSegment + sentence).length <= 50) {
              // 如果当前片段加上新句子的长度不超过50个字符，合并
              currentSegment += sentence + '，';
          } else {
              // 否则，将当前片段加入数组，并开始新的片段
              textSegments.push(currentSegment);
              currentSegment = sentence + '，';
          }
      });

      // 添加最后一个片段
      if (currentSegment) {
          textSegments.push(currentSegment);
      }

      // 播放语音的递归函数
      let currentIndex = 0;

      const playSegment = (index) => {
          if (!isPlaying) {
              this.onListenPause();
          }

          if (index >= textSegments.length) {
              console.log('所有文本播放完成');
              this.setData({
                  isPlaying: false
              });
              return;
          }

          const segment = textSegments[index];
          plugin.textToSpeech({
              lang: 'zh_CN', // 语言类型
              content: segment, // 当前片段文本
              success: (res) => {
                  console.log(`语音合成成功，文件路径：${res.filename}`);
                  // 播放语音
                  const innerAudioContext = wx.createInnerAudioContext();
                  this.setData({
                      audioContext: innerAudioContext // 保存音频上下文
                  });
                  innerAudioContext.src = res.filename;
                  innerAudioContext.play();

                  // 监听播放结束事件
                  innerAudioContext.onEnded(() => {
                      innerAudioContext.destroy(); // 播放完成释放内存
                      if (this.data.isPlaying) { // 检查是否仍在播放
                          playSegment(index + 1);
                      }
                  });

                  // 监听播放错误事件
                  innerAudioContext.onError((err) => {
                      console.error('播放错误：', err);
                      innerAudioContext.destroy();
                      if (this.data.isPlaying) { // 检查是否仍在播放
                          playSegment(index + 1);
                      }
                  });
              },
              fail: (err) => {
                  console.error('语音合成失败：', err);
                  if (this.data.isPlaying) { // 检查是否仍在播放
                      playSegment(index + 1);
                  }
              }
          });
      };

      if (isPlaying) {
          playSegment(0);
      }
  },

  onListenPause() {
      console.log("暂停朗读");
      if (this.data.audioContext) {
          this.data.audioContext.pause();
          this.setData({
              isPlaying: false
          });
      }
  },

  onCloseListen(){
      this.onListenPause();
      this.setData({
          listenPlayshow:false
      })
  },

  onVdio() {
      let video = this.data.contain.video;
      if (video == null) {
          this.setData({
              vidoNotify: true
          });

          // 设置 2 秒后将 notify 设置为 false
          setTimeout(() => {
              this.setData({
                  vidoNotify: false
              });
          }, 2000);
      } else {
          // 这里可以添加播放视频的逻辑
          console.log("播放视频");
          this.setData({
              vidoShow: true
          })
      }
  },
  onCloseVido() {

      this.setData({
          vidoShow: false
      });

      let id = this.data.id
      let newContain = this.data.contain
      let video = this.data.contain.video
      newContain.video = null;

      this.setData({
          contain: newContain
      })

      newContain.video = video;
      // 设置 2 秒后将 notify 设置为 false
      setTimeout(() => {
          this.setData({
              contain: newContain
          });
      }, 2000);


  },

  


  


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
      console.log("页面隐藏")
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
      console.log("页面卸载")
      let isPlaying=this.data.isPlaying
      if(isPlaying){
          this.onListenPause();
      }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
      return {
          title: this.data.contain.title,
          path: "/pages/stroyDetail/stroyDetail?id=" + this.data.id
      }
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
      return {
          title: this.data.contain.title,
          path: "/pages/stroyDetail/stroyDetail?id=" + this.data.id
      }
  }

})